package service

import (
	"blog/app/dto"
	"blog/app/entity"
	JWT "blog/app/middleware"
	"blog/config"
	"fmt"
	"github.com/gin-gonic/gin"
)

// LoginHandler 用户登录
func LoginHandler(c *gin.Context) {
	var param dto.UserLoginParams
	err := c.ShouldBindJSON(&param)
	if err != nil {
		fmt.Println("数据绑定失败", err)
		CommonCJsonReply(c, config.LoginFail, "请求参数错误")
		return
	}
	err, code := entity.LoginCheck(param)
	if err != nil {
		code = config.LoginFail
		CommonCJsonReply(c, code, "数据查询失败")
		return
	}
	if code == config.SUCCESS {
		// 登录成功获取token
		token, err := JWT.GenerateToken(param.UserName, param.Password)
		if err != nil {
			fmt.Println("获取token失败", err)
			CommonCJsonReply(c, config.LoginFail, "获取token失败")
			return
		}
		// 实现登录逻辑
		CommonCJsonReply(c, code, gin.H{
			"token": token,
		})
	} else {
		CommonCJsonReply(c, code, "登录失败")
	}
}

func LoginHandlerParam(c *gin.Context) {
	var param dto.UserLoginPost
	err := c.ShouldBindJSON(&param)
	if err != nil {
		fmt.Println("数据绑定失败", err)
		CommonCJsonReply(c, config.ERROR, "请求参数错误")
		return
	}

	err, code := entity.LoginCheckParam(param)
	if err != nil {
		code = config.LoginFail
		CommonCJsonReply(c, code, "数据查询失败")
		return
	}
	// 登录成功获取token
	token, err := JWT.GenerateToken(param.Params.UserName, param.Params.Password)
	if err != nil {
		fmt.Println("获取token失败", err)
		CommonCJsonReply(c, config.ERROR, "获取token失败")
		return
	}
	// 实现登录逻辑
	CommonCJsonReply(c, code, gin.H{
		"token": token,
	})
}

// RegisterHandler 用户注册
func RegisterHandler(c *gin.Context) {
	var param dto.UserRegParams
	err := c.ShouldBindJSON(&param)

	if err != nil {
		fmt.Println("数据绑定失败", err)
		CommonCJsonReply(c, config.ERROR, "请求参数错误")
		return
	}

	err, code := entity.RegCheck(param)
	if err != nil {
		fmt.Println("注册用户失败", err)
		CommonCJsonReply(c, code, "注册用户失败")
		return
	}
	CommonCJsonReply(c, code, "ok")
}
